/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.controller;

import com.persistencia.domain.Asignatura;
import com.persistencia.domain.Clase;
import com.persistencia.domain.Modalidaddictado;
import com.persistencia.domain.Plancurricular;
import com.service.ClaseService;
import com.service.impl.ClaseServiceImpl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author SHERLY
 */
@ManagedBean
@ViewScoped
public class ClaseController {

    private Clase clase;
    private Clase claseSeleccionado;
    private List<Clase> listaClase;
    private ClaseService claseService;
    private String NAsgId;
    private double NHoras;
    private String VTipoDictado;
    private int NCapacidad;
    
    public ClaseController() {
        clase = new Clase();
        claseSeleccionado = new Clase();
        listaClase = new ArrayList<Clase>();
        claseService = new ClaseServiceImpl();
        NAsgId = "0";
        listarClase();
    }
    
    private void listarClase(){
        try{
            System.out.println("Entramos a listar ciclo");
            listaClase = claseService.obtenerListaClase();           
        } catch (Exception ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void consultarClase(){
        try{
            listarClase();
        } catch (Exception ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void grabarClase(){
        FacesMessage msg = null;
        try{
            System.out.println("Entramos a crear clase");
            Asignatura asignatura = new Asignatura(Integer.parseInt(NAsgId));
            //asignatura.setNPlnCrrId(new Plancurricular(1));
            //Asignatura asignatura = new Asignatura();
            //asignatura.setNAsgId(2);
            
            Modalidaddictado modalidaddictado = new Modalidaddictado();
            modalidaddictado.setNMdlDctId(Integer.parseInt(VTipoDictado));
            clase.setNMdlDctId(modalidaddictado);        
            clase.setNAsgId(asignatura);
            
            clase.setVEstado("1");
            clase.setNHoras(BigDecimal.valueOf(NHoras));
            clase.setNCapacidad(NCapacidad);
            
            
            
            //clase.setNMdlDctId(new Modalidaddictado(Integer.parseInt(VTipoDictado)));
            System.out.println("NHoras="+clase.getNHoras());
            System.out.println("NCapacidad="+clase.getNCapacidad());
            System.out.println("asignatura="+clase.getNAsgId().getNAsgId());
            System.out.println("NMdlDctId="+clase.getNMdlDctId().getNMdlDctId());
            System.out.println("estado="+clase.getNMdlDctId().getVEstado());
            claseService.registrarClase(clase);
            
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO,"Inserción","La Clase se creo satisfactoriamente.");
            clase = new Clase();
            NAsgId = "0";
            VTipoDictado = "0";
            listarClase();
        } catch (Exception ex) {
            System.out.println("ex="+ex.getMessage());
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,"Inserción","No se registro la Clase.");
            Logger.getLogger(ClaseController.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }
    
    /*public SelectItem[] getItemsModalidadDictadoSelectOne(){
        try {
            System.out.println("getItemsModalidadDictadoSelectOne");
            //return getSelectItems(modalidadDictadoService.obtenerListaModalidadDictado());
            return null;
        } catch (Exception ex) {
            Logger.getLogger(ModalidadDictadoController.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
        
    }
    
    private SelectItem[] getSelectItems(List<Modalidaddictado> listaModalidadDictado) {
        SelectItem[] items = new SelectItem[listaModalidadDictado.size()];
        int i = 0;
        for (Modalidaddictado objModalidadDictado : listaModalidadDictado) {
            items[i++] = new SelectItem(objModalidadDictado.getNMdlDctId(), objModalidadDictado.getVNombre());
        }
        return items;
    }*/
    //<editor-fold defaultstate="collapsed" desc="GETTER and SETTER">        
    public Clase getClase() {
        return clase;
    }

    public void setClase(Clase clase) {
        this.clase = clase;
    }

    public Clase getClaseSeleccionado() {
        return claseSeleccionado;
    }

    public void setClaseSeleccionado(Clase claseSeleccionado) {
        this.claseSeleccionado = claseSeleccionado;
    }

    public ClaseService getClaseService() {
        return claseService;
    }

    public void setClaseService(ClaseService claseService) {
        this.claseService = claseService;
    }

    public List<Clase> getListaClase() {
        return listaClase;
    }

    public void setListaClase(List<Clase> listaClase) {
        this.listaClase = listaClase;
    }
    
    public String getNAsgId() {
        return NAsgId;
    }

    public void setNAsgId(String NAsgId) {
        this.NAsgId = NAsgId;
    }
    
    public double getNHoras() {
        return NHoras;
    }

    public void setNHoras(double NHoras) {
        this.NHoras = NHoras;
    }
    
    public String getVTipoDictado() {
        return VTipoDictado;
    }

    public void setVTipoDictado(String VTipoDictado) {
        this.VTipoDictado = VTipoDictado;
    }
    
    public int getNCapacidad() {
        return NCapacidad;
    }

    public void setNCapacidad(int NCapacidad) {
        this.NCapacidad = NCapacidad;
    }
     
    //</editor-fold>

}